package com.zt.vo;

import lombok.Data;

import java.util.Date;

/**
 * 优惠券发放统计信息VO
 */
@Data
public class CouponDistributionStatsVO {
    
    /**
     * 优惠券ID
     */
    private Integer couponId;
    
    /**
     * 优惠券标题
     */
    private String couponTitle;
    
    /**
     * 总发放数量
     */
    private Integer distributedCount;
    
    /**
     * 已使用数量
     */
    private Integer usedCount;
    
    /**
     * 未使用数量
     */
    private Integer unusedCount;
    
    /**
     * 已过期数量
     */
    private Integer expiredCount;
    
    /**
     * 优惠券总数限制
     */
    private Integer totalCount;
    
    /**
     * 剩余可发放数量
     */
    private Integer remainingCount;
    
    /**
     * 发放率（已发放/总数）
     */
    private Double distributionRate;
    
    /**
     * 使用率（已使用/已发放）
     */
    private Double usageRate;
    
    /**
     * 最后发放时间
     */
    private Date lastDistributionTime;
    
    /**
     * 统计时间
     */
    private Date statsTime;
    
    /**
     * 构造方法
     */
    public CouponDistributionStatsVO() {
        this.statsTime = new Date();
    }
    
    /**
     * 计算剩余可发放数量
     */
    public void calculateRemainingCount() {
        if (totalCount != null && distributedCount != null) {
            this.remainingCount = totalCount - distributedCount;
        }
    }
    
    /**
     * 计算发放率
     */
    public void calculateDistributionRate() {
        if (totalCount != null && totalCount > 0 && distributedCount != null) {
            this.distributionRate = (double) distributedCount / totalCount * 100;
        }
    }
    
    /**
     * 计算使用率
     */
    public void calculateUsageRate() {
        if (distributedCount != null && distributedCount > 0 && usedCount != null) {
            this.usageRate = (double) usedCount / distributedCount * 100;
        }
    }
    
    /**
     * 计算所有比率
     */
    public void calculateAllRates() {
        calculateRemainingCount();
        calculateDistributionRate();
        calculateUsageRate();
    }
}
